package wlxldh357;

public class J19_callBy {

	// call by value vs call by reference
	// 값 이동시키기 swap
	// a = 3, b= 5 --> swap(3,5) --> a = 5 , b = 3
	
	public static void main(String[] args) {
		int a = 3; // 기본 자료형
		int b = 5;
		int[] aa = { 3 }; // 참조 자료형
		int[] bb = { 5 };
		System.out.println("swap 호출 전 a : " + a + " b : " + b);
		System.out.println("swap 호출 전 aa : " + aa[0] + " bb : " + bb[0]);

		swap(a, b); // 기본 자료형
		swap(aa, bb); // 참조 자료형
		System.out.println("swap 호출 후 a : " + a + " b : " + b);
		System.out.println("swap 호출 후 aa : " + aa[0] + " bb : " + bb[0]);
		System.out.println(a + " , " + aa + " , " + aa[0]);
		swap(aa[0], bb[0]);

	}

	private static void swap(int[] aa, int[] bb) {
		int tmp = aa[0];
		aa[0] = bb[0];
		bb[0] = tmp;
		System.out.println("swap 실행중 aa : " + aa[0] + "  bb :" + bb[0]);
	}

	static void swap(int x, int y) {
		// x = y; y = x;
		int tmp = x;
		x = y;
		y = tmp;
		System.out.println("swap 실행중 a : " + x + "  b :" + y);
	}

}